class Solution {
public:
    bool is_reverse(string &s, int l, int r) {
        int i = l, j = r;
        while (i < j) {
            if (s.at(i) == s.at(j)) {
                i++, j--;
            } else {
                return false;
            }
        }
        return true;
    }
    bool validPalindrome(string s) {
        int l = 0, r = s.size() - 1;
        while (l < r) {
            if (s[l] == s[r]) {
                l++, r--;
            } else {
                return is_reverse(s, l, r - 1) || is_reverse(s, l + 1, r);
            }
        }
        return true;
    }
};
